iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 21
0

今天我們來實作如何在k8s上部署的服務http server和grpc server。

建立映像檔

首先我們要將先前開發完成的二個服務http server和grpc server打包成映像檔,上傳到GCP上的Container Repository,這樣映像檔才能被k8s使用。

上傳映像檔

docker push gcr.io/xxxxxx/mygrpcserver:v1.0.0
docker push gcr.io/xxxxxx/myhttpserver:v1.0.0

部署k8s

接下來我們先建立一個Namespace名字叫dev-ithome代表這次要使用的開發環境。

kubectl create namespace dev-ithome

接下來我們先建立yaml

# deploy_gs.yaml
kind: Deployment
apiVersion: apps/v1
metadata:
  name: gs
  namespace: dev-ithome
spec:
  selector:
    matchLabels:
      app: gs
  replicas: 1
  template:
    metadata:
      labels:
        app: gs
    spec:
      containers:
      - name: gs
        image: gcr.io/xxxxxx/mygrpcserver:v1.0.0
        imagePullPolicy: Always
        env:
        - name: AppEnv
          value: "dev"      
        ports:
        - name: gs-port
          containerPort: 8081
        livenessProbe:
          tcpSocket:
            port: 8081 
# service_gs.yaml
apiVersion: v1
kind: Service
metadata:
  name: gs
  namespace: dev-ithome
spec:
  type: ClusterIP
  ports:
  - name: http
    port: 8081
    targetPort: 8081
    protocol: TCP 
  selector:
    app: gs
# deploy_hs.yaml
kind: Deployment
apiVersion: apps/v1
metadata:
  name: hs
  namespace: dev-ithome
spec:
  selector:
    matchLabels:
      app: hs
  replicas: 1
  template:
    metadata:
      labels:
        app: hs
    spec:
      containers:
      - name: hs
        image: gcr.io/xxxxxx/myhttpserver:v1.0.1
        imagePullPolicy: Always
        env:
        - name: AppEnv 
          value: "dev"              
        ports:
        - name: hs-port
          containerPort: 8080
        livenessProbe:
          tcpSocket:
            port: 8080 
# service_hs.yaml
apiVersion: v1
kind: Service
metadata:
  name: hs
  namespace: dev-ithome
spec:
  type: ClusterIP
  ports:
  - name: http
    port: 8080
    targetPort: 8080
    protocol: TCP 
  selector:
    app: hs

接下來我們要開始部署k8s

kubectl -n dev-ithome apply -f deploy_gs.yaml
kubectl -n dev-ithome apply -f deploy_hs.yaml
kubectl -n dev-ithome apply -f service_gs.yaml
kubectl -n dev-ithome apply -f service_hs.yaml

部署完成後,檢查看看系統狀況

kubectl -n dev-ithome get pods
NAME                  READY   STATUS    RESTARTS   AGE
gs-5cb56569dd-bjlms   1/1     Running   0          6m13s
hs-6dc894d94-dmq6f    1/1     Running   0          6m10s
kubectl -n dev-ithome get service
NAME   TYPE           CLUSTER-IP     EXTERNAL-IP      PORT(S)          AGE
gs     ClusterIP      10.229.6.255    <none>          8081:32494/TCP   10m
hs     ClusterIP      10.229.2.35     <none>          8080:32019/TCP   10m

透過port-forward檢查系統

kubectl -n dev-ithome port-forward svc/hs 8080:80

https://ithelp.ithome.com.tw/upload/images/20200928/201297628Tuoe0D4M1.png

小結

k8s的服務基本上已經部署完成,但是一般的使用者,不可能像我們一樣用port-forward的方式來連線,所以在下一篇我們將實際操作如何綁定IP,讓使用者用IP來做連線。


上一篇
Day20 Google Container Registry
下一篇
Day 22 GKE實戰(2)
系列文
微服務系統建置與監控30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言